The term “agent” or “software agent” is used to designate any piece of object code that is to some extent autonomous and independent. Because of this independence, communication between a plurality of agents can give rise to problems.
In present-day distributed software architectures, software agents communicate with one another over preestablished communication means. These channels can be of various kinds.
They can be point-to-point communication means or broadcast communication means or indeed other types of communication means can be used.
With point-to-point means, data sent by a first software agent is received only by a single second software agent via dedicated communication means.
With broadcast communication, the data sent by the first software agent can be received by one or more software agents.
The communication means can be an asynchronous communication channel such as a notification channel. By way of example, this type of communication means is very commonly used in the context of common object request broker architecture (CORBA) as defined by the open management group (OMG).
Another way of providing communication means is of the “blackboard” type: a software agent writes data for communication into a dedicated memory zone which is read periodically by the destination software agent(s).
Naturally, these examples of communication means do not constitute an exhaustive list of all methods of communication that can be used between two software agents.
Nevertheless, it is important to observe that in the state of the art, the particular communication means used are always determined when the software system is designed. In other words, no system is provided for enabling the communication means to be modified during the lifetime of the system.
Unfortunately, there exists a need to be able to modify the communication means between a plurality of software agents of a system in dynamic manner (i.e. during the lifetime of the system).
This need can stem from a preceding communication means being unavailable. Such unavailability can be the result, for example, of a connection breaking down in the computer network in which the sender and destination software agents are implemented.
The need can also arise from the necessity of maintaining the system. For example, in order to correct a problem in the system, it can be important to find out what information is being conveyed over a communication means. Under such circumstances, it is necessary to modify the communication means so as to make it readable by an operator, or by some third software application.
Another need can arise from a desire to share loading. If some particular communication means is momentarily or permanently saturated with traffic, then it can be beneficial to change it so as to increase the performance of the system.